package dao;

import java.util.List;

import javax.persistence.Query;

import model.MateriaPrima;
import model.Produto;
import model.ProdutoInsumo;

public class DaoProduto extends GenericDao<Produto> {

	public DaoProduto() {
		super();
	}
	
	@Override
	public void remove(Produto p) {
		DaoMateriaPrima daoMp = new DaoMateriaPrima();
		MateriaPrima mp = null;
		for(ProdutoInsumo insumo : p.getInsumos()) {
			mp = daoMp.find(insumo.getMateriaPrima().getId());
			mp.setEstoque(mp.getEstoque()+insumo.getQuantidade());
			daoMp.merge(mp);
		}
		begin();
		getManager().remove(p);
		commit();
	}
	
	@SuppressWarnings("unchecked")
	public List<Produto> findProdutos() {
		Query q = getManager().createQuery("SELECT p FROM Produto p JOIN p.unidade u");
		try {
			List<Produto> produtos = q.getResultList();
			return produtos;
		}
		catch (Exception e) {
			return null;
		}
	}
	

	@SuppressWarnings("unchecked")
	public List<Produto> findProdutosComInsumos() {
		Query q = getManager().createQuery("SELECT p FROM Produto p WHERE p.insumos IS NOT EMPTY");
		try {
			List<Produto> produtos = q.getResultList();
			return produtos;
		}
		catch (Exception e) {
			return null;
		}
	}
	

}
